home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amicdfilesystem / src / hfs.h < prev    next >
Text File  |  1994-10-01  |  3KB  |  152 lines

  1. /* hfs.h: */
  2.  
  3.  
  4. typedef struct ext_descr {
  5.   t_ushort    StABN;
  6.   t_ushort    NumABlks;
  7. } t_ext_descr;
  8.  
  9. typedef t_ext_descr t_extdatarec[3];
  10.  
  11. typedef struct mdb {
  12.   t_ushort    SigWord;
  13.   t_ulong    CrDate;
  14.   t_ulong    LsMod;
  15.   t_ushort    Atrb;
  16.   t_ushort    NmFls;
  17.   t_ushort    VBMSt;
  18.   t_ushort    AllocPtr;
  19.   t_ushort    NmAlBlks;
  20.   t_ulong    AlBlkSiz;
  21.   t_ulong    ClpSiz;
  22.   t_ushort    AlBlSt;
  23.   t_ulong    NxtCNID;
  24.   t_ushort    FreeBks;
  25.   t_uchar    VolNameLen;
  26.   t_uchar    VolName[27];
  27.   t_ulong    VolBkUp;
  28.   t_ushort    VSeqNum;
  29.   t_ulong    WrCnt;
  30.   t_ulong    XTClpSiz;
  31.   t_ulong    CTClpSiz;
  32.   t_ushort    NmRtDirs;
  33.   t_ulong    FilCnt;
  34.   t_ulong    DirCnt;
  35.   t_ulong    FndrInfo[8];
  36.   t_ushort    VCSize;
  37.   t_ushort    VBMCSize;
  38.   t_ushort    CtlCSize;
  39.   t_ulong    XTFlSize;
  40.   t_extdatarec    XTExtRec;
  41.   t_ulong    CTFlSize;
  42.   t_extdatarec    CTExtRec;
  43. } t_mdb;
  44.  
  45. typedef struct node_descr {
  46.   t_ulong    FLink;
  47.   t_ulong    BLink;
  48.   t_uchar    Type;
  49.   t_uchar    NHeight;
  50.   t_ushort    NRecs;
  51.   t_ushort    Reserved;
  52. } t_node_descr;
  53.  
  54. typedef struct hdr_node {
  55.   t_node_descr    node_descr;
  56.   t_ushort    Depth;
  57.   t_ulong    Root;
  58.   t_ulong    NRecs;
  59.   t_ulong    FNode;
  60.   t_ulong    LNode;
  61.   t_ushort    NodeSize;
  62.   t_ushort    KeyLen;
  63.   t_ulong    NNodes;
  64.   t_ulong    Free;
  65. } t_hdr_node;
  66.  
  67. typedef struct idx_record {
  68.   char        length;    /* always 0x25 */
  69.   char        reserved;
  70.   t_ulong    parent_id;
  71.   t_uchar    name_length;
  72.   char        name[31];
  73.   t_ulong    pointer;
  74. } t_idx_record;
  75.  
  76. typedef struct leaf_record {
  77.   char        length;
  78.   char        reserved;
  79.   t_ulong    parent_id;
  80.   t_uchar    name_length;
  81.   char        name[1];
  82. } t_leaf_record;
  83.  
  84. typedef struct dir_record {
  85.   char        type;
  86.   char        reserved;
  87.   t_ushort    Flags;
  88.   t_ushort    Val;
  89.   t_ulong    DirID;
  90.   t_ulong    CrDat;
  91.   t_ulong    MdDat;
  92.   t_ulong    BkDat;
  93. } t_dir_record;
  94.  
  95. typedef struct file_record {
  96.   char        type;
  97.   char        reserved;
  98.   char        Flags;
  99.   char        Typ;
  100.   char        FInfo[16];
  101.   t_ulong    FlNum;
  102.   t_ushort    StBlk;
  103.   t_ulong    LgLen;
  104.   t_ulong    PyLen;
  105.   t_ushort    RStBlk;
  106.   t_ulong    RLgLen;
  107.   t_ulong    RPyLen;
  108.   t_ulong    CrDat;
  109.   t_ulong    MdDat;
  110.   t_ulong    BkDat;
  111.   char        FXInfo[16];
  112.   t_ushort    ClpSize;
  113.   t_extdatarec    ExtRec;
  114.   t_extdatarec    RExtRec;
  115.   t_ulong    Resrv;
  116. } t_file_record;
  117.  
  118. typedef struct dir_thread_record {
  119.   char        type;
  120.   char        reserved;
  121.   t_ulong    Resrv[2];
  122.   t_ulong    ParID;
  123.   t_uchar    CNameLen;
  124.   t_uchar    CName[31];
  125. } t_dir_thread_record;
  126.  
  127. typedef struct file_thread_record {
  128.   char        type;
  129.   char        reserved;
  130.   t_ulong    Resrv[2];
  131.   t_ulong    ParID;
  132.   t_uchar    CNameLen;
  133.   t_uchar    CName[31];
  134. } t_file_thread_record;
  135.  
  136. typedef union catalog_record {
  137.   t_dir_record        d;
  138.   t_file_record        f;
  139.   t_dir_thread_record    dt;
  140.   t_file_thread_record    ft;
  141. } t_catalog_record;
  142.  
  143. int HFS_Find_Master_Directory_Block (CDROM *p_cd, t_mdb *p_mdb);
  144. t_bool Uses_HFS_Protocol (CDROM *p_cd, int *p_skip);
  145. t_bool HFS_Get_Header_Node (CDROM *p_cd, t_ulong p_mdb_pos,
  146.                 t_mdb *p_mdb, t_hdr_node *p_hdr_node);
  147. t_node_descr *HFS_Get_Node (CDROM *p_cd, t_ulong p_mdb_pos, t_mdb *p_mdb,
  148.                 t_ulong p_node);
  149. void Convert_Mac_Characters (char *p_buf, int p_buf_len);
  150.  
  151. t_bool HFS_Init_Vol_Info (VOLUME *p_volume, int p_start_block);
  152.